package com.ctshk.rpc.custom.service;

import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.common.model.TokenUser;
import com.ctshk.rpc.custom.dto.inquiry.InquiryInfoDTO;
import com.ctshk.rpc.custom.dto.inquiry.InquiryListDTO;
import com.ctshk.rpc.custom.req.inquiry.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 询价单 服务类
 * </p>
 *
 * @author 谢诗宏
 * @since 2021-01-13
 */
public interface ICustomizedInquiryService {

    /**
     * 发起询价
     * @param inquiryReq
     * @param userId
     * @return
     */
    long add(InquiryReq inquiryReq, long userId);

    /**
     * 编辑询价
     * @param inquiryReq
     * @param userId
     * @return
     */
    long edit(InquiryReq inquiryReq, long userId);

    /**
     * 询价单详情
     * @param inquiryInfoReq
     * @return
     */
    Result<InquiryInfoDTO> query(InquiryInfoReq inquiryInfoReq);

    /**
     * 询价单列表
     * @param inquiryListReq
     * @param currentUser
     * @return
     */
    PageResponse<InquiryListDTO> list(InquiryListReq inquiryListReq, TokenUser currentUser);

    /**
     * 接受询价
     * @param inquiryInfoReq
     * @return
     */
    Result acceptInquiry(InquiryInfoReq inquiryInfoReq);

    /**
     * 拒绝询价
     * @param inquiryRefuseReq
     * @return
     */
    Result refuseInquiry(InquiryRefuseReq inquiryRefuseReq);

    /**
     * 下载文件
     * @param inquiryTypeReq
     * @param request
     * @param response
     */
    void downLoadFile(InquiryTypeReq inquiryTypeReq, HttpServletRequest request, HttpServletResponse response);

    /**
     * 询价列表操作
     * @param inquiryChangeStatusReq
     * @param userId
     * @return
     */
    Result changeStatus(InquiryChangeStatusReq inquiryChangeStatusReq, Long userId);

    /**
     * 获取当天即将过期的所有询价单列表
     * @return
     */
    List<InquiryInfoDTO> expiresList();

    /**
     * 将询价单置为超时状态
     * @param id
     * @return
     */
    Result expires(long id);

    /**
     * 将询价单置为超时状态-延迟加载demo
     * @param id
     * @return
     */
    void expiresTaskDemo(long id);

    /**
     * 将询价单置为超时状态-付款后取消延迟加载任务demo
     * @param id
     * @return
     */
    void payTaskDemo(long id);
}
